#pragma once

#include <string>

#include "mini_redis/config.h"

namespace mini_redis {

class KeyValueStore;

#if 0
    Rdb 类是核心持久化组件，负责实现 Redis 经典的 RDB 快照持久化机制，
即把内存中的键值对数据（KeyValueStore）批量写入磁盘文件（RDB 文件），
并在服务重启时从该文件恢复数据，从而保证数据不丢失。

#endif

class Rdb
{
public:
    Rdb() = default;
    explicit Rdb(const RdbOptions& opts) : opts_(opts) {}

    inline void setOptions(const RdbOptions& opts)
    {
        opts_ = opts;
    }

    bool save(const KeyValueStore& store, std::string& err) const;
    bool load(KeyValueStore& store, std::string& err) const;

    std::string path() const;

private:
    RdbOptions opts_{};
};

}    // namespace mini_redis
